package com.neusoft.exercise;

import java.util.Scanner;

public class HomeWork0625 {

	public static void main(String[] args) {
		// 打印直角三角形
		//rightTriangle();
		//打印等腰三角形
		//equicruralTriangle();
		//空心三角形
		//hollowTriangle();
		//空心菱形
		hollowRhombus();
		//求1-100累加和
		//sum100();
		//计算1-100的所有奇数的累加和
		//sumOdd100();
	}
	
	/**
	 * 求1-100的所有奇数的累加和
	 */
	private static void sumOdd100() {
		// 定义求和
		int iSum = 0;
		// 定义循环因子
		int i = 1;
		System.out.println("求1-100的所有奇数的累加和");
		// for循环找奇数
		for (i = 1; i <= 100;i++) {
			if (i % 2 == 1) {
				iSum += i;
				//i = i + 2;
			} else {
				//i++;
			}
		}
		// 输出累加和
		System.out.println("(for)iSum=" + iSum);
		System.out.println("============");

		// while循环初始化isum和i
		iSum = 0;
		i = 1;
		// while 循环 1-100循环到几就加几
		while (i <= 100) {
			if (i % 2 == 1) {
				iSum += i;
				i = i + 2;
			} else {
				i++;
			}
		}
		// 输出累加和
		System.out.println("(while)iSum=" + iSum);
		System.out.println("============");

		// do-while 初始化iSum和i
		iSum = 0;
		i = 1;
		do {
			if (i % 2 == 1) {
				iSum += i;
				i = i + 2;
			} else {
				i++;
			}
		} while (i <= 100);
		// 输出累加和
		System.out.println("(while)iSum=" + iSum);
		System.out.println("============");

	}
	
	
	
	
	
	
	
	/**
	 * for while do-while
	 * 计算 1-100的和
	 * 
	 */
	private static void sum100() {
		//for循环求和
		int iSum=0;
		//循环因子
		int i;
		System.out.println("计算 1-100的和");
		for(i=1;i<=100;i++) {
			iSum+=i;
		}
		//输出累加和
		System.out.println("(for)iSum="+iSum);
		System.out.println("============");
		
		//while循环初始化isum和i
		iSum=0;
		i=1;
		//while 循环 1-100循环到几就加几
		while(i<=100) {
			iSum+=i;
			i++;
		}
		//输出累加和
		System.out.println("(while)iSum="+iSum);
		System.out.println("============");
		
		//do-while 初始化iSum和i
		iSum=0;
		i=1;
		do {
			iSum+=i;
			i++;
		}while(i<=100);
		//输出累加和
		System.out.println("(while)iSum="+iSum);
		System.out.println("============");
	}
	
	
	
	
	
	
	
	
	/*-
	 *
	 * indent(2)
	 * 打印空心菱形
	 * 
	 *       *
	 *      * *
	 *     *   *
	 *    *     *
	 *   *       *
	 *    *     *
	 *     *   *
	 *      * *
	 *       *
	 * 
	 * 
	 */
	
	
	private static void hollowRhombus() {
		// 输入行数
		int iline;
		Scanner sc = new Scanner(System.in);
		// 输出提示信息
		System.out.println("打印*的菱形:");
		System.out.println("请输入菱形所占行数(奇数):");
		iline = sc.nextInt();
		//for循环上部 行数为iline/2+1行，类似于空心三角形
		for (int i = 1; i <= iline/2+1; i++) {
			//打印空格
			for (int j = 1; j <= iline/2+1 - i; j++) {
				System.out.print(" ");
			}
			//打印*
			System.out.print("*");
			
			//如果不是第一行，就多打印一个空格
			if (i != 1) {
				//打印空格
				for (int k = 1; k <= (i - 1) * 2 - 1; k++) {
					System.out.print(" ");
				}
				System.out.print("*");
			}
			//一行打印完换行
			System.out.println();
		}
			//打印一个行为iline/2的空心到三角形
			for (int i = 1; i <= iline/2; i++) {
				//打印空格，i行有i个空格
				for (int j = 1; j <= i; j++) {
					System.out.print(" ");
				}
				//打印*
				System.out.print("*");
				//如果不是最后一行，就按照格式打印空格和*号
				if (i != iline/2) {
					/*
					 * 空格数是递减的 
					 * 一共四行 第一行 中间5个空格
					 * 第二行 中间3个空格
					 * 第三行 中间1个空格
					 * */
					for (int k = 1; k <=(iline/2-i)*2-1; k++) {
						System.out.print(" ");
					}
					System.out.print("*");
				}
				//每行输出完换行
				System.out.println();
				
			}
		
		//for(int i=1;i)
		
		System.out.println();
		System.out.println("=================");
	}
	
	
	
	
	
	
	
	/*-
	 * 
	 * indent(2)
	 * 打印空心三角形
	 * 
	 *       *
     *      * *
     *     *   *
     *    *     *
     *   *********
	 * 
	 */
	private static void hollowTriangle() {
		// 输入行数
		int iline;
		Scanner sc = new Scanner(System.in);
		// 输出提示信息
		System.out.println("打印*的空心三角形:");
		System.out.println("请输入待打印的行数:");
		iline = sc.nextInt();
		//第一层循环，打印iline-1行空心三角形两边
		for (int i = 1; i <= iline - 1; i++) {
			//第二层循环，打印行起始的空格
			for (int j = 1; j <= iline - i; j++) {
				System.out.print(" ");
			}
			//打印每行第一个*
			System.out.print("*");
			//打印空心中间的空格
			for (int k = 1; k <= (i - 1) * 2 - 1; k++) {
				System.out.print(" ");
			}
			//如果正在打印的不是第一行，就打印每行第二个*
			if (i != 1) {
				System.out.print("*");
			}
			//换行
			System.out.println();
		}
		//打印空心三角形的第三条边
		for (int i = 1; i <= iline * 2 - 1; i++) {
			System.out.print("*");
		}
		//换行
		System.out.println();
		System.out.println("=================");
	}
	
	
	
	
	
	
	
	
	
	
	
	
	
	/*-
	 *
	 * indent
	 * 打印等腰三角形
	 * 
	 *       *
     *      ***
     *     *****
     *    *******
     *   *********
	 * 
	 */
	private static void equicruralTriangle() {
		// 输入行数
		int iline;
		Scanner sc = new Scanner(System.in);
		// 输出提示信息
		System.out.println("打印*的等腰三角形:");
		System.out.println("请输入待打印的行数:");
		//扫描输入
		iline = sc.nextInt();
		//第一层循环打印行
		for(int i=1;i<=iline;i++) {
			//第二层循环打印行中的空格
			for(int j=1;j<=iline-i;j++) {
				System.out.print(" ");
			}
			//第二层循环打印*
			for(int k=1;k<=i*2-1;k++) {
				System.out.print("*");
			}
			//一行打印完换行
			System.out.println();
		}
		System.out.println("=================");
	}
	
	
	
	/*-
	 * 
	 * indent
	 * 输入行数打印*的直角三角形
	 * *
	 * **
	 * ***
	 * ****
	 */
	private static void rightTriangle() {
		//输入行数
		int iline;
		Scanner sc= new Scanner(System.in);
		//输出提示信息
		System.out.println("打印*的直角三角形:");
		System.out.println("请输入待打印的行数:");
		//扫描输入行数
		iline = sc.nextInt();
		//第一层循环 打印iline行
		for(int i=0;i<=iline;i++) {
			//第二层循环，打印行中的*
			for(int j=0;j<=i;j++) {
				System.out.print("*");
			}
			//一行打印完成换行
			System.out.println();
		}
		
		System.out.println("===================");
	}

}
